VOS - Aan- en afmelden
In een eerste fase melden we aan door de gebruiker op te zoeken in persenList.json. Dat is geen veilige manier van werken. Dan doen we om het aanmeldingsmechanisme te leren. Later voegen we daar Google OAuth aan toe en maken we een API om de gebruiker op de server op te zoeken.
Controller
De use case voor aanmelden is index/login. De knop wordt gerenderd in de identitity
methode van de render
namespace.
De controller roept de login
en de logout
methode op die staat in de vos
namespace:
var controller = {
'home': {
'index': function () {
...
},
'gas-leak': function () {
...
},
'amok': function () {
...
},
'loggingIn': view['home']['loggingIn'],
'login': function () {
vos.login();
vos.getPosition();
vos.setMyLocation();
render.identity('#home .identity');
view['home']['index']();
},
'logout': function () {
vos.logout();
vos.getPosition();
vos.setMyLocation();
render.identity('#home .identity');
view['home']['index']();
},
'settings': vos.settings
},
De login methode
Het personList.json bestand wordt geladen en we zoeken naar de gebruiker. Als de gebruiker bestaat laden we de geschikte procedure gebaseerd op de rol van de gebruiker:
var vos = {
'model' : {
...
},
'setModel': function () {
...
},
getPosition: function () {
...
},
setMyLocation: function () {
...
},
/**
* nagaan of de gebruikersnaam en het paswoord in de personList zitten
* dit is geen veilige manier om aan te melden en moet je niet in productie app gebruiken
*/
login: function () {
var userName = document.getElementById('userName').value;
var password = document.getElementById('password').value;
if (userName) {
$http('data/personList.json')
.get()
.then(function (responseText) {
var person = JSON.parse(responseText);
var userIdentity = person.list.find(function (item) {
return item.userName === userName && item.password === password
});
if (userIdentity) {
userIdentity.loggedIn = true;
// identity = JSON.parse(localStorage.getItem('identity'));
vos.model.identity = userIdentity;
var payload = {};
// procedures depend on Role (in uppercase)
var fileName = 'data/procedure' + vos.model.identity.role.toUpperCase() + '.json';
$http(fileName).get(payload)
.then(function (data) {
vos.model.procedureList = JSON.parse(data);
localStorage.setItem('model', JSON.stringify(vos.model));
controller['home']['index']();
});
} else {
alert('ongeldige gebruikersnaam of paswoord');
}
})
.catch(function (message) {
alert(message);
})
} else {
alert('Je moet een gebruikersnaam opgeven!');
}
},
/**
* de property loggedIn van identity op false zetten
* en role op GAST
*/
logout: function () {
...
},
navigateTo: function (view, title) {
...
},
smsPrepare: function (number, messageText) {
...
},
settings: function () {
...
}
};
De logout methode
We vervangen de aangemelde gebruiker door GAST en laden het procedureGAST.json bestand.
var vos = {
'model' : {
...
},
'setModel': function () {
...
},
getPosition: function () {
...
},
setMyLocation: function () {
...
},
/**
* de property loggedIn van identity op false zetten
* en role op GAST
*/
logout: function () {
$http('data/identity.json')
.get()
.then(function (responseText) {
vos.model.identity = JSON.parse(responseText);
var payload = {};
// procedures depend on Role (in uppercase)
var fileName = 'data/procedure' + vos.model.identity.role.toUpperCase() + '.json';
return $http(fileName).get(payload);
})
.then(function (responseText) {
vos.model.procedureList = JSON.parse(responseText);
vos.model.loaded = true;
localStorage.setItem('model', JSON.stringify(vos.model));
controller['home']['index']();
})
.catch(function (message) {
alert(message);
});
},
navigateTo: function (view, title) {
...
},
smsPrepare: function (number, messageText) {
...
},
settings: function () {
...
}
};
2017-12-16 18:14:54